const db = require("../db/index");
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const config = require('../config');
// 用户注册
exports.regUser = (req, res) => {

  const userinfo = req.body;
  
  // if(!userinfo.username || !userinfo.password){
  //   return res.cc('用户名或密码不能为空')
  // }
  // 检查用户名是否已存在
  const checkSql = 'SELECT * FROM ev_users WHERE username = ?';
  db.query(checkSql, [userinfo.username], (err, results) => {
    if (err) {
      return res.cc(err)
    }

    // 如果用户名已存在
    if (results.length > 0) {
      return res.cc('用户名已存在')
    }

    // 用户名不存在，执行注册
    const insertSql = "INSERT INTO ev_users (username, password) VALUES (?, ?)";
    // 对密码进行加密
    userinfo.password = bcrypt.hashSync(userinfo.password, 10);
    db.query(
      insertSql,
      [userinfo.username, userinfo.password],
      (err, results) => {
        if (err) {
          return res.cc(err)
        }

        if (results.affectedRows === 1) {
          return res.cc('注册成功',200)
        } else {
          return res.cc('注册失败')
        }
      }
    );
  });
}
// 用户登录
exports.login = (req, res) => {

  const userinfo = req.body;

  const loginSql = 'SELECT * FROM ev_users WHERE username = ?';
  db.query(loginSql, [userinfo.username], (err, results) => {
    if (err) {
      return res.cc(err)
    }

    // 如果用户名不存在
    if (results.length === 0) {
      return res.cc('用户名不存在')
    }

    // 用户名存在，对比密码
    const compareResult = bcrypt.compareSync(userinfo.password, results[0].password);
    if (!compareResult) {
      return res.cc('密码错误')
    }

    // 密码对比成功，登录成功  
    // token生成要注意 不能将密码和头像等敏感信息放到token中
    const user = { ...results[0], password: '', user_pic: '' }
    // 生成token
    const token = jwt.sign(user,config.jetSecretKey,{
      expiresIn:config.expiresIn
    })
    // 登录成功，将token响应给客户端
    return res.send({
      status:200,
      message:'登录成功',
      token:'Bearer '+token
    })
  });
}

// export const  login = (req, res) => {
//   res.send('login')
// }
exports.test = (req, res) => {
  db.query("SELECT 1", (err, results) => {
    if (err) {
      return res.cc(err)
    } else {
      return res.cc('数据库连接成功',200)
    }
  });
};

// 退出登录 - 简单版本
exports.logout = (req, res) => {
  // 返回成功响应，前端负责清除token
  res.send({
    status: 200,
    data: {
      message: "退出登录成功",
    },
  });
};

